In signaling networks in which messages are transmitted over a communications link between two signaling points, an enormous number of message units must be formatted and transmitted over an appropriate communications path. In an ideal environment, all message units would be transferred immediately to the appropriate destination without error or other impediment. However, in real world data communications, limited communication resources restrict both how much data can be transmitted and the speed of data message unit transmission. Moreover, there are a number of factors that detrimentally impact the accuracy with which messages are communicated. Consequently, message units or entire messages may need to be retransmitted.
One result of these message transmission impediments is that some type of congestion may often occur at one or more points in the message transmission process. Another message transmission problem is the issue of message priority, i.e., how to ensure that higher priority messages are transmitted before lower priority messages. Message priority is particularly important when there is congestion causing transmission delays.
One approach is to simply disregard message priorities in congested situations. Another approach is to discard messages when there is congestion. But neither of these approaches is desirable from the standpoint of accomplishing message priority transmission with a high degree of probability.
Network congestion and signal priority are factors generally raised in various standards, e.g., ANSI, TTC and ITU-T. In the ITU-T recommendation Q.704, section 3.8 sets forth criteria for determining signaling link and route congestion status. Different specific approaches for implementing some sort of message priority or message congestion scheme have also been proposed. For example, U.S. Pat. No. 5,268,895 to Topper generates and updates a composite, status memory to keep track of message congestion levels at signaling nodes in a communications network. U.S. Pat. No. 5,506,839 to Hatta discloses congestion control in a frame relay communications context. U.S. Pat. No. 5,521,916 to Choudhury et al. teaches storing packets in memory space priority subqueues in a shared memory asynchronous transfer mode (ATM) switch.
But while such congestion and priority schemes exist, they are often complicated, e.g., elaborate procedures to handle out of sequence or priority messages as in the latter mentioned patent. The Choudhury scheme, for example, employs a linked list of pointers to messages that is time inefficient, prone to error, and difficult to maintain and update. Moreover, Choudhury's method uses "space priorities" which relate to memory allocation rather than to message transmission priority. Such space priorities are maintained as subqueues in a total queue which is relatively complicated. Therefore, there is still a need for more effective and simplified management of message congestion that also implements message priority.
The ITU-T Recommendation Q.704 Signaling Network Functions and Messages section 3.8 Signaling Network Congestion contains a description of how a single or multi-level congestion buffer might be implemented using one buffer with single or multi-level congestion indications and priorities which is complicated and inefficient. In contrast, the inventive approach described below permits explicit assignment of transmission priorities by higher levels while essentially providing multi-level congestion indications with improved reliability, simplicity, and fewer discarded messages. Message recovery during changeover or changeback is also more easily and reliably performed while preserving message priority sequence.
It is an object therefore of the present invention to provide a simple technique for promptly and reliably reporting congestion of messages having a specific priority level as well as prioritizing transmission of messages based upon priorities established for each message to be transmitted.
It is a further object of the invention to provide a flexible and relatively simple approach for handling various levels of congestion and different priority messages that is also readily configurable for different communications applications.
These and other objectives are met and the above-identified problems are solved by the present invention. Communication messages are managed using a plurality of buffers, with different buffers corresponding to different message priorities. In one example embodiment, the buffers are first-in-first-out (FIFO) buffers. Messages to be transmitted are processed to determine the priority of each message. Each message is stored in one of the plurality of buffers corresponding to its determined priority. Messages are then transmitted starting from the highest priority buffer, continuing with the next higher priority buffer, and so forth. This approach is useful even when there is no congestion to give precedence to higher priority information over one or more other types of information.
A significant advantage of the present invention is that each of the buffers is configurable both in terms of its size and its individual parameters. For each buffer, a configurable congestion level, full level, and recovery level are established. When an accumulated number of messages in a buffer exceeds its established congestion level, a congestion message is generated requesting that one or more message sources temporarily stop sending messages for transmission. A configurable "overflow" region is maintained between the buffer's congestion level and full level in order to store any messages already "in the pipeline," i.e., messages requested to be transmitted before the congestion message was generated. However, once the number of messages in one of the buffers exceeds its full level, further received messages are not stored.
These levels may be selected to suit the delays between reporting congestion and reception of this report at the process which originates the congestion message and the time needed to react to this congestion report, which together determine the lag between occurrence of congestion and receipt of the last message sent by the originating process. There may be several messages in progress, i.e., "in the pipeline," which cannot be stopped. If these messages cannot be accommodated in the proper priority buffer, they are discarded. After the buffer level reaches or dips below its recovery level, a resume message is generated indicating that new messages having the corresponding priority at the one buffer will now be accepted. Such configurability permits buffer size and various limit levels to be optimally tuned to the specific requirements of a particular application. In one example application of the invention, a single congestion level is defined for each priority buffer. The buffer size is defined as twice this congestion level. This example buffer configuration is both efficient and simple. The recovery level is defined as half this congestion level. This example configuration is both efficient and simple.
For both international signaling standards and the ANSI recommendation for national networks, congestion signals are repeated for each received message with the same priority, n times, where n=8 (at this time). This repetition is achieved by use of a counter n for each priority buffer which is incremented for each message inserted after the buffer is filled to the specified congestion level, and the generation of a congestion report, which occurs while n&lt;9. The counter n is reset to zero when the concerned buffer content is reduced to below the recovery level.
In an example, preferred embodiment, the present invention is applied to a data communications system where messages are transmitted from a first data communications signaling point to a second data signaling point in accordance with a multi-level signaling protocol such as Signaling System Number 7 (SS7), but which may be used in other protocols with even greater advantage, such as, (but not confined to), ATM and TCP/IP protocols. Moreover, while the present invention may be applied to any one of the layers/levels from the lowest to the highest in SS7, in the example embodiment, the invention is implemented in message transfer part-layer 2 (MTP-L2) and the interface module/bus handler between some implementations of MTP-L2 and the modules above it. Priorities for each message are determined by higher SS7 levels, and analyzed/processed by an MTP-L2 message controller which reports congestion and message transmission priorities using the configurable message priority buffering scheme described above.
These features and advantages as well as others of the present invention will be described in further detail in conjunction with the drawings below .